# -*- coding: utf-8 -*-
# __author__:heliujiang
# 2022/4/4 16:34
import requests

import config
from common.test_log import create_logger


class Search:
    _instance = None
    logger = create_logger()
    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    def __init__(self, host):
        if host == 'dev':
            self.host = config.DEV_URL
        elif host == 'uat':
            self.host = config.UAT_URL
        elif host == 'pro':
            self.host = config.PRO_URL

    #搜索服务或者应用商品
    def search_goods(self,test_data,token):
        """
            发送HTTP GET请求搜索应用或服务

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - name: str,  名称(可选)
              - seriesCode： str, 车系
              - modelCode： str, 车型
              - pageNum：int 页码
              - pageSize： int 每页大小
              - goodsType： str 商品类型（1：应用 2：服务） （可选）
              - vin: str, 车辆vin
              - isVcos： int 是否为vcos平台 示例：true （可选）
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/search/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res


    #vcos平台搜索关键字列表
    def search_vcos_keywords(self,test_data,token):
        """
           发送HTTP GET请求VCOS-搜索关键字列表

           参数:
           - test_data: dict, 一个字典，包含以下键：
             - keyword: str,  关键字
             - seriesCode： str, 车系
             - modelCode: str , 车型
           - token: str, 用于API认证的令牌。

           返回:
           - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/search/vcos/keyword/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    #搜索关键字列表
    def search_keywords(self,test_data,token):
        """
           发送HTTP GET请求搜索关键字列表

           参数:
           - test_data: dict, 一个字典，包含以下键：
             - keyword: str,  关键字
             - userId：str，  用户ID
           - token: str, 用于API认证的令牌。

           返回:
           - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/search/keyword/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res
